package assignment

import org.springframework.cloud.contract.spec.Contract

Contract.make {
    request {
        method 'GET'
        url("/api/v2/assignments/quizzes") {
            queryParameters {
                parameter("type", "ONLINE_LANGUAGE_QUIZ")
                parameter("searchType", "quizId")
                parameter("searchContent", "3")
            }
        }
        headers {
            contentType(applicationJsonUtf8())
            header("id",21)
        }
    }
    response {
        status 200
        headers {
            contentType(applicationJsonUtf8())
        }
        body("""
                {
                    "content": [
                        {
                            "id":1,
                            "description":"description",
                            "testData":"testData",
                            "initCode":"initCode",
                            "makerId":1,
                            "onlineLanguageName":"onlineLanguageName",
                            "language":"java",
                            "answer":"answer",
                            "stackId":1,
                            "answerDescription":"answerDescription",
                            "available":true,
                            "status":2,
                            "remark":"remark"
                        }
                    ]
                }
        """)
        bodyMatchers {
            jsonPath('$.[*]', byType())
            jsonPath('$.content[*].id', byRegex(number()))
            jsonPath('$.content[*].description', byRegex("[\\S\\s]+"))
            jsonPath('$.content[*].testData', byRegex("[\\S\\s]+"))
            jsonPath('$.content[*].initCode', byRegex("[\\S\\s]+"))
            jsonPath('$.content[*].makerId', byRegex(number()))
            jsonPath('$.content[*].onlineLanguageName', byRegex("[\\S\\s]+"))
            jsonPath('$.content[*].language', byRegex("[\\S\\s]+"))
            jsonPath('$.content[*].answer', byRegex("[\\S\\s]+"))
            jsonPath('$.content[*].stackId', byRegex(number()))
            jsonPath('$.content[*].answerDescription', byRegex("[\\S\\s]+"))
            jsonPath('$.content[*].available', byRegex("[\\S\\s]+"))
            jsonPath('$.content[*].status', byRegex(number()))
            jsonPath('$.content[*].remark', byRegex("[\\S\\s]+"))
        }
    }
}
